/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package basedados;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 *
 * @author was048
 */
public class Conexao {
      // Definição e inicialização de variáveis
      public static Connection connection = null;
      public static Statement consulta = null;
      public static ResultSet resultado = null;
      public static final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
      public static final String URL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};"
      + "DBQ=D:/Profiles/was048/My Documents/NetBeansProjects/Agenda/src/basedados/Northwind.mdb;DriverID=22;READONLY=true}";

      // Método para conexão com a base de dados
      public static boolean getConexao() {

        try  {
          Class.forName(DRIVER);
          connection = DriverManager.getConnection(URL);
          // Cria um statement para verificar se a conexão foi aberta com sucesso
          consulta = connection.createStatement();
          return true;
        } catch (ClassNotFoundException erro){
            JOptionPane.showInternalMessageDialog(null, "Driver não encontrado.");
            return false;
        } catch(SQLException erro) {
            JOptionPane.showMessageDialog(null, "Problema ao conectar.");
            System.out.print(erro.getMessage());
            return false;
        }
      }

      // Método que finaliza conexão com a base de dados
      public static void close() {
          closeResultado();
          closeConsulta();
          closeConexao();
      }

      public static void closeConexao() {
          try{
              connection.close();
          } catch(SQLException erro) {
              erro.printStackTrace();
          }
      }

      public static void closeConsulta(){
          try{
              consulta.close();
          } catch(SQLException erro) {
              erro.printStackTrace();
          }
      }

      public static void closeResultado(){
          try{
              resultado.close();
          } catch(SQLException erro) {
              erro.printStackTrace();
          }
      }

      // Método que realiza uma consulta na base de dados de acordo com o código SQL passado por
      // parâmetro e retorna os dados para a varivável resultado do tipo ResultSet
      // Método executeQuery() utilizado para consultas.
      public static void setConsulta(String sql) {
          try {
            resultado = consulta.executeQuery(sql);
          }catch (SQLException erro) {
            erro.printStackTrace();
          }
      }

      // Método que realiza operações de intervenção na base de dados de acordo com o código SQL
      // passado por parâmetro e retorna 0 ou 1 (operação realizada ou falha na operação).
      // Método executeUpdate() utilizado para inserção, exclusão e modificação de dados

     public static int runSQL(String sql) {
          int res = 0;
          try {
             res = consulta.executeUpdate(sql);
          } catch(SQLException erro) {
              erro.printStackTrace();
          }
          return res;
      }
     
}
